home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-19 / rcs55.zip / README < prev    next >
Text File  |  1991-09-15  |  14KB  |  328 lines

  1. This is a port of RCS 5.5 to MS-DOS using Borland C++ V2.0 as the
  2. toolset.  The port is distributed under the same terms as the
  3. original GNU licence - See the file COPYING included with this
  4. archive.
  5.  
  6. MS-DOS Specific Notes
  7. ---------------------
  8.  
  9. Most of the source ported straight to Borland C++ with minimal
  10. or no change; most changes concentrated in modern style templates
  11. for procedure declarations and might be considered cosmetic other
  12. than they were necessary to get everything to compile !
  13.  
  14. Changes were made to rcsutil.c to support DOS'isms for forking
  15. child processes and file re-direction.  These are the most
  16. significant.
  17.  
  18. RCS 5.5 as distributed for UNIX uses a shell script and test
  19. programs to generate conf.h so that it is appropriate to the
  20. flavor of UNIX and handles local compiler differences.  I have
  21. munged conf.h by hand so that it works in a MS-DOS environment.
  22.  
  23. This port replaces the RCS convention of appending ',v' to identify
  24. RCS files to '%v' - on MS-DOS THIS RESTRICTS YOU TO THE USE OF
  25. SINGLE CHARACTERS FOR FILE EXTENSIONS.  In general this hasn't 
  26. proved to be too much of a restriction - it does insure that
  27. include files can be handled by dependency rules in make files.
  28.  
  29. I have included 'merge.exe' which is a munged version of diff3
  30. to replace the shell script that implements 'merge' on UNIX.  As
  31. a result, 'rcsmerge' works just fine !  Also included is a version
  32. of 'rcsfreeze' (also a shell script on UNIX) that is written in
  33. the shell language of 'A UNIX like SHELL for MS-DOS' written
  34. by Allen I. Holub described in the book of the same name.
  35.  
  36. You will need a version of diff that implements the '-an' options
  37. such as GNU diff - this archive is big enough as it is so I have
  38. not included these tools here; they are available on a variety
  39. of archive systems across the Internet.
  40.  
  41. Please note that the Free Software Foundation does NOT provide
  42. support for MS-DOS versions of GNU software.  I draw your attention
  43. to the third paragraph of the GNU license below; this software is
  44. distributed AS IS WITHOUT ANY WARRANTY.  In general I am unable to
  45. answer questions or fix bugs you may find in this software.
  46.  
  47. Stu Phillips (stu@tandem.com)
  48. --------------------------------------------------------------------------
  49.  
  50.  
  51. /* Copyright (C) 1982, 1988, 1989 Walter Tichy
  52.    Copyright 1990 by Paul Eggert
  53.    Distributed under license by the Free Software Foundation, Inc.
  54.  
  55. This file is part of RCS.
  56.  
  57. RCS is free software; you can redistribute it and/or modify
  58. it under the terms of the GNU General Public License as published by
  59. the Free Software Foundation; either version 1, or (at your option)
  60. any later version.
  61.  
  62. RCS is distributed in the hope that it will be useful,
  63. but WITHOUT ANY WARRANTY; without even the implied warranty of
  64. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  65. GNU General Public License for more details.
  66.  
  67. You should have received a copy of the GNU General Public License
  68. along with RCS; see the file COPYING.  If not, write to
  69. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  70.  
  71. Report problems and direct all questions to:
  72.  
  73.     rcs-bugs@cs.purdue.edu
  74.  
  75. */
  76.  
  77. $Id: README,v 5.6 1990/12/13 06:54:04 eggert Exp $
  78.  
  79. This directory contains complete sources for RCS version 5.5.
  80.  
  81.  
  82. Installation notes:
  83.  
  84.   RCS requires a diff that supports the -n option.
  85.   Get GNU diff (version 1.15 or later) if your diff lacks -n.
  86.  
  87.   RCS works best with a diff that supports -a, -L, and (diff3 only) -m.
  88.   GNU diff supports these options.
  89.  
  90.   Sources for RCS are in the src directory.
  91.   Read the directions in src/Makefile to set up the options
  92.   for building RCS on your system.
  93.   If `make' fails to build src/conf.h, look in src/conf.error
  94.   to see what went wrong in the src/conf.sh shell file.
  95.   If all else fails, create src/conf.h manually by editing a
  96.   copy of src/conf.heg.
  97.  
  98.   Manual entries reside in man.
  99.  
  100.   To test your installation of RCS, run the shell file src/rcstest.
  101.  
  102.   Troff source for the paper `RCS--A System for Version Control', which
  103.   appeared in _Software--Practice & Experience_, is in rcs.ms.
  104.  
  105.  
  106. RCS compatibility notes:
  107.  
  108.   RCS version 5 reads RCS files written by any RCS version released since 1982.
  109.   It also writes RCS files that these older versions of RCS can read,
  110.   unless you use one of the following new features:
  111.  
  112.     checkin times after 1999/12/31 23:59:59 GMT
  113.     checking in non-text files
  114.     non-Ascii symbolic names
  115.     rcs -bX, where X is nonempty
  116.     rcs -kX, where X is not `kv'
  117.     RCS files that exceed hardcoded limits in older RCS versions
  118.  
  119.  
  120. Features new to RCS version 5 include:
  121.  
  122.   RCS can check in arbitrary files, not just text files, if diff -a works.
  123.   RCS can merge lines containing just a single `.' if diff3 -m works.
  124.   GNU diff supports the -a and -m options.
  125.  
  126.   RCS can now be installed as a setgid or setuid program
  127.   if the setegid() and seteuid() system calls work.
  128.   Setid privileges yield extra security if RCS files are protected so that
  129.   only the effective group or user can write RCS directories.
  130.   RCS uses the real group and user for all accesses other than to RCS files.
  131.   On older hosts lacking setegid() and seteuid(), RCS uses the effective group
  132.   and user for all accesses; formerly it was inconsistent.
  133.  
  134.   New options to co, rcsdiff, and rcsmerge give more flexibility to keyword
  135.   substitution.
  136.  
  137.     -kkv substitutes the default `$Keyword: value $' for keyword strings.
  138.     However, a locker's name is inserted only as a file is being locked,
  139.     i.e. by `ci -l' and `co -l'.  This is normally the default.
  140.  
  141.     -kkvl acts like -kkv, except that a locker's name is always inserted
  142.     if the given revision is currently locked.  This was the default in
  143.     version 4.  It is now the default only with when using rcsdiff to
  144.     compare a revision to a working file whose mode is that of a file
  145.     checked out for changes.
  146.  
  147.     -kk substitutes just `$Keyword$', which helps to ignore keyword values
  148.     when comparing revisions.
  149.  
  150.     -ko retrieves the old revision's keyword string, thus bypassing keyword
  151.     substitution.
  152.  
  153.     -kv retrieves just `value'.  This can ease the use of keyword values, but
  154.     it is dangerous because it causes RCS to lose track of where the keywords
  155.     are, so for safety the owner write permission of the working file is
  156.     turned off when -kv is used; to edit the file later, check it out again
  157.     without -kv.
  158.  
  159.   rcs -ko sets the default keyword substitution to be in the style of co -ko,
  160.   and similarly for the other -k options.  This can be useful with binary file
  161.   formats that cannot tolerate changing the lengths of keyword strings.
  162.   However it also renders a RCS file readable only by RCS version 5 or later.
  163.   Use rcs -kkv to restore the usual default substitution.
  164.  
  165.   RCS can now be used by development groups that span timezone boundaries.
  166.   All times are now displayed in GMT, and GMT is the default timezone.
  167.   To use local time with co -d, append ` LT' to the time.
  168.   When interchanging RCS files with sites running older versions of RCS,
  169.   users may encounter discrepancies of up to 13 hours in old time stamps.
  170.   The list of timezone names has been modernized.
  171.  
  172.   Dates are now displayed using four-digit years, not two-digit years.
  173.   Years given in -d options must now have four digits.
  174.   This change is required for RCS to continue to work after 1999/12/31.
  175.   The form of dates in version 5 RCS files will not change until 2000/01/01,
  176.   so in the meantime RCS files can still be interchanged with sites
  177.   running older versions of RCS.  To make room for the longer dates,
  178.   rlog now outputs `lines: +A -D' instead of `lines added/del: A/D'.
  179.  
  180.   To help prevent diff programs that are broken or have run out of memory
  181.   from trashing an RCS file, ci now checks diff output more carefully.
  182.  
  183.   ci -k now handles the Log keyword, so that checking in a file
  184.   with -k does not normally alter the file's contents.
  185.  
  186.   RCS no longer outputs white space at the ends of lines
  187.   unless the original working file had it.
  188.   For consistency with other keywords,
  189.   a space, not a tab, is now output after `$Log:'.
  190.   Rlog now puts lockers and symbolic names on separate lines in the output
  191.   to avoid generating lines that are too long.
  192.   A similar fix has been made to lists in the RCS files themselves.
  193.  
  194.   RCS no longer outputs the string `Locker: ' when expanding Header or Id
  195.   keywords.  This saves space and reverts back to version 3 behavior.
  196.  
  197.   The default branch is not put into the RCS file unless it is nonempty.
  198.   Therefore, files generated by RCS version 5 can be read by RCS version 3
  199.   unless they use the default branch feature introduced in version 4.
  200.   This fixes a compatibility problem introduced by version 4.
  201.  
  202.   RCS can now emulate older versions of RCS; see `co -V'.
  203.   This may be useful to overcome compatibility problems
  204.   due to the above changes.
  205.  
  206.   Programs like Emacs can now interact with RCS commands via a pipe:
  207.   the new -I option causes ci, co, and rcs to run interactively,
  208.   even if standard input is not a terminal.
  209.   These commands now accept multiple inputs from stdin separated by `.' lines.
  210.  
  211.   ci now silently ignores the -t option if the RCS file already exists.
  212.   This simplifies some shell scripts and improves security in setuid sites.
  213.  
  214.   Descriptive text may be given directly in an argument of the form -t-string.
  215.  
  216.   The character set for symbolic names has been upgraded
  217.   from Ascii to ISO 8859.
  218.  
  219.   rcsdiff now passes through all options used by GNU diff;
  220.   this is a longer list than 4.3BSD diff.
  221.  
  222.   merge's new -L option gives tags for merge's overlap report lines.
  223.   This ability used to be present in a different, undocumented form;
  224.   the new form is chosen for compatibility with GNU diff3's -L option.
  225.  
  226.   rcsmerge and merge now have a -q option, just like their siblings do.
  227.  
  228.   RCS now attempts to ignore parts of an RCS file that look like they come
  229.   from a future version of RCS.
  230.  
  231.   When properly configured, RCS now strictly conforms with Posix 1003.1-1988.
  232.   Normally, RCS file names contain `,', which is outside the Posix portable
  233.   filename character set; but in impoverished Posix environments, you can
  234.   compile RCS so that the RCS file for Foo is named just RCS/Foo.
  235.   RCS can still be compiled in non-Posix traditional Unix environments,
  236.   and can use common BSD and USG extensions to Posix.
  237.   RCS is a conforming ANSI C program, and also compiles under traditional C.
  238.  
  239.   Arbitrary limits on internal table sizes have been removed.
  240.   The only limit now is the amount of memory available via malloc().
  241.  
  242.   File temporaries, lock files, signals, and system call return codes
  243.   are now handled more cleanly, portably, and quickly.
  244.   Some race conditions have been removed.
  245.  
  246.   A new compile-time option RCSPREFIX lets administrators avoid absolute path
  247.   names for subsidiary programs, trading speed for flexibility.
  248.  
  249.   The configuration procedure is now more automatic.
  250.  
  251.   Snooping has been removed; it did not work in version 4.
  252.  
  253.  
  254. Version 4 was the first version distributed by FSF.
  255. Beside bug fixes, features new to RCS version 4 include:
  256.  
  257.   The notion of default branch has been added; see rcs -b.
  258.  
  259.  
  260. Version 3 was included in the 4.3BSD distribution.
  261.  
  262.  
  263. Further projects:
  264.  
  265.   Improve performance when checking out branch revisions;
  266.   see the `piece table' comments in rcs.ms.
  267.   Joe Berkovitz of Stratus has written some fast revision extraction code;
  268.   unfortunately there wasn't enough time to integrate it into RCS version 5.
  269.   It's probably best to use mmap() here if available.
  270.  
  271.   Let the user mark an RCS revision as deleted; checking out such a revision
  272.   would result in no working file.  Similarly, using `co -d' with a date either
  273.   before the initial revision or after the file was marked deleted should
  274.   remove the working file.  For extra credit, extend the notion of `deleted' to
  275.   include `renamed', i.e. when an RCS file gets renamed.
  276.  
  277.   Use a better scheme for locking revisions; the current scheme requires
  278.   changing the RCS file just to lock or unlock a revision.
  279.   The new scheme should coexist as well as possible with older versions of RCS.
  280.  
  281.   Permit multiple option-filename pairs, e.g. co -r1.4 a -r1.5 b.
  282.  
  283.   Add rcs options for changing keyword names, e.g. XConsortium instead of Id.
  284.  
  285.   If there are multiple locks by a user, ci should fall back on ci -k's
  286.   method to figure out which version it is.
  287.  
  288.   Add frozen branches a la SCCS.  In general, be able to emulate all of
  289.   SCCS, so that an SCCS-to-RCS program can be practical.
  290.  
  291.   Improve RCS's method for storing binary files.
  292.   Although it is more efficient than SCCS's,
  293.   the diff algorithm is still line oriented,
  294.   and often generates long output for minor changes to an executable file.
  295.  
  296.   Port binary file handling to non-Unix hosts where fopen(F,"r") and
  297.   fopen(F,"rb") are quite different beasts.
  298.  
  299.   Extend the grammar of RCS files so that keywords need not be in a fixed order.
  300.  
  301.   Clean up the source code with a consistent indenting style.
  302.  
  303.   Update the date parser to use the more modern getdate.y by Bellovin, Salz,
  304.   and Berets.
  305.  
  306.   Internationalize messages; unfortunately, there's no common standard yet.
  307.  
  308.   Prune the unnecessary keyword substitution baggage from the rcs command.
  309.  
  310.   Break up the code into a library so that it's easier to write new programs
  311.   that manipulate RCS files.
  312.  
  313.  
  314. Credits:
  315.  
  316.   RCS was designed and built by Walter F. Tichy of Purdue University.
  317.   RCS version 3 was released in 1983.
  318.  
  319.   Thomas Narten, Dan Trinkle, and others of Purdue supported RCS through
  320.   version 4.2, released in 1989.  Guy Harris of Sun contributed many porting
  321.   fixes.  Paul Eggert of System Development Corporation contributed bug fixes
  322.   and tuneups.  Jay Lepreau contributed 4.3BSD support.
  323.  
  324.   Paul Eggert of Twin Sun wrote the changes for RCS version 5, released in
  325.   1990.  Ideas for setgid support were contributed by Bill Hahn of Stratus.
  326.   Test case ideas were contributed by Matt Cross of Stratus.
  327.   Adam Hammer of Purdue QAed.
  328.